package com.cheng.example.book.advise151.chap7.client110;

import lombok.extern.slf4j.Slf4j;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;


/**
 * 建议110：提倡异常封装
 */
@Slf4j
public class Client110 {

    /**
     * 一次抛出多个异常
     *
     * @throws MyException
     */
    public void doStuff() throws MyException {
        List<Throwable> list = new ArrayList<Throwable>();
        // 第一个逻辑片段
        try {
            // Do Something
        } catch (Exception e) {
            list.add(e);
        }
        // 第二个逻辑片段
        try {
            // Do Something
        } catch (Exception e) {
            list.add(e);
        }
        // 检查是否有必要抛出异常
        if (list.size() > 0) {
            throw new MyException(list);
        }
    }

    public static void doStuff2() throws MyBussinessException {
        try {
            InputStream is = new FileInputStream("无效文件.txt");
        } catch (FileNotFoundException e) {
            //方便开发人员和维护人员而设置的异常信息
            e.printStackTrace();
            //抛出业务异常
            throw new MyBussinessException();
        }
        /* 文件操作 */
    }


    public void doStuff3() {
        try {
            //doSomething
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * 异常分类处理
     */
    public void doStuff4() {
        try {
            //doSomething
            InputStream is = new FileInputStream("无效文件.txt");
        } catch (FileNotFoundException e) {
            log.info("文件未找到，使用默认配置文件....");
            e.printStackTrace();
        } catch (SecurityException e1) {
            log.info(" 无权访问，可能原因是......");
            e1.printStackTrace();
        }
    }

}
